Nico Rieck: Currently _MSC_VER and _WIN32 are used to guard code which is MSVC-specific, MSVCRT-specific, or Windows-specific. Because Clang can also define _MSC_VER, and MSVCRT is not necessarily the only C runtime, these macros should not be used interchangeably. This patch divides all Windows-related bits into the aforementioned categories. Two new macros are introduced: - _LIBCPP_MSVC: Defined when compiling with MSVC. Detected using _MSC_VER, excluding Clang. - _LIBCPP_MSVCRT: Defined when using the Microsoft CRT. This is the default when _WIN32 is defined. This leaves _WIN32 for code using the Windows API. This also corrects the spelling of _LIBCP_HAS_IS_BASE_OF to _LIBCPP_HAS_IS_BASE_OF. Nico, please prepare a patch for CREDITS.TXT, thanks. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@187593 91177308-0d34-0410-b5e6-96231b3b80d8 
diff --git a/include/cwchar b/include/cwchar index 845ccec..90eae75 100644 --- a/include/cwchar +++ b/include/cwchar 
@@ -106,9 +106,9 @@  #include <__config>  #include <cwctype>  #include <wchar.h> -#ifdef _WIN32 +#ifdef _LIBCPP_MSVCRT  #include <support/win32/support.h> // pull in *swprintf defines -#endif // _WIN32 +#endif // _LIBCPP_MSVCRT    #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)  #pragma GCC system_header @@ -127,12 +127,12 @@  using ::vfwprintf;  using ::vswprintf;  using ::vwprintf; -#ifndef _MSC_VER +#ifndef _LIBCPP_MSVCRT  using ::swscanf;  using ::vfwscanf;  using ::vswscanf;  using ::vwscanf; -#endif // _MSC_VER +#endif // _LIBCPP_MSVCRT  using ::wprintf;  using ::wscanf;  using ::fgetwc; @@ -146,10 +146,10 @@  using ::putwchar;  using ::ungetwc;  using ::wcstod; -#ifndef _MSC_VER +#ifndef _LIBCPP_MSVCRT  using ::wcstof;  using ::wcstold; -#endif // _MSC_VER +#endif // _LIBCPP_MSVCRT  using ::wcstol;  #ifndef _LIBCPP_HAS_NO_LONG_LONG  using ::wcstoll;